home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / comm / tcp / rxsocket.lha / rxsocket / examples / echottcp.rexx < prev    next >
OS/2 REXX Batch file  |  2000-11-28  |  1KB  |  59 lines

  1. /*
  2.     A very simple echo T/TCP client.
  3.     Show how to make a basic connection to a tcp service
  4.     in T/TCP and came back to TCP if it doesn't work.
  5.     To test it on localhost, be sure echo/tcp is enabeld
  6.     in the services and inetd database, then write
  7.     rx echotcp localhost.
  8. */
  9.  
  10. l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  11. if AddLibrary("rexxsupport.library","rxsocket.library")~=0 then exit
  12.  
  13. prg = ProgramName("NOEXT")
  14.  
  15. if ~RMH_ReadArgs("HOST/A") then do
  16.     call PrintFault(IoErr(),prg)
  17.     exit
  18. end
  19.  
  20. addr = resolve(parm.0.value)
  21. if addr=="-1" then call err "no host <"parm.0.value">"
  22.  
  23. if ~getservbyname("SE","echo","tcp") then
  24.     call err "echo tcp service not found"
  25.  
  26. sin.AddrFamily = "INET"
  27. sin.AddrAddr   = addr
  28. sin.AddrPort   = se.ServPort
  29.  
  30. sock = socket("INET","STREAM","IP")
  31. if sock<0 then call err "no socket ("errno()")"
  32.  
  33. request = "echo service test"
  34.  
  35. dottcp=1
  36.  
  37. if sendto(sock,REQUEST,"EOF","SIN")~=length(REQUEST) then do
  38.     err=Errno()
  39.     if err==57 then dottcp=0
  40.     else call err "send error ("errno()")"
  41. end
  42.  
  43. if dottcp==0 then do
  44.     say "(back to TCP)"
  45.     if connect(sock,"SIN")<0 then call err "connect error ("errno()")"
  46.     if send(sock,REQUEST)~=length(REQUEST) then call err "send error ("errno()")"
  47. end
  48.  
  49. if recv(sock,"BUF",256)<0 then
  50.     call err "recv error ("errno()")"
  51.  
  52. say buf
  53. exit
  54.  
  55. err: procedure expose prg
  56. parse arg msg
  57.     say prg":" msg
  58.     exit
  59.